package com.youdoneed.base.application;

/**
 * 应用程序异常类，可以传递数据给调用者。
 * 也可用于将编译期异常转换成运行时异常。
 *
 * @author Ewing
 */
public class AppException extends RuntimeException {
    // 可自定义code来处理业务逻辑，该异常在全局异常处理时会自动转换成ResultMessage
    private int code = 0;
    private Object data;

    // 方便的构造方法，按需调用。

    public AppException() {
    }

    public AppException(String message) {
        super(RequestMessage.getMessage(message));
    }

    public AppException(String message, Throwable cause) {
        super(RequestMessage.getMessage(message), cause);
    }

    // 支持链式调用的Setter和Getter。

    public int getCode() {
        return code;
    }

    public AppException setCode(int code) {
        this.code = code;
        return this;
    }

    // 泛型自动转换
    @SuppressWarnings("unchecked")
    public <T> T getData() {
        return (T) data;
    }

    public AppException setData(Object data) {
        this.data = data;
        return this;
    }
}